로딩 중이에요... 🐣
01 Cookiecutter를 활용한 Django Instagram 프로젝트 생성 | ✅ 편저: 코담 운영자
1강 - Cookiecutter를 활용한 Django Instagram 프로젝트 생성
1 cookiecutter를 활용한 프로젝트 생성✨ 프로젝트 소개 및 준비
이 강의는 최신 Python 3.12, Django 5.0, 그리고 Cookiecutter-Django 2024.2 릴리즈 템플릿을 기반으로 진행되는 인스타그램 클론 프로젝트입니다.
이전 강의에서 Django의 기본기를 학습한 상태에서, 이제 실전 프로젝트를 통해 Django 프레임워크의 실제 사용법을 익히게 됩니다.
이 강의는 Cookiecutter-Django 템플릿을 활용하여 인스타그램 클론 프로젝트를 생성하는 과정입니다. 이전 강의에서 Django의 기본을 학습한 상태에서, 이제 실전 프로젝트를 통해 Django 프레임워크 사용법을 익힙니다.
🔗 소스코드
📺 참고 영상
-🔗 Django로 만드는 Instagram 클론 강의
🔧 사용 기술 및 버전
항목 | 버전 |
---|---|
Python | 3.12.x |
Django | 5.0.x |
Cookiecutter-Django | 2024.2.x |
PostgreSQL | (선택사항) |
Tailwind CSS | 최신 |
✔️ 사용 스택
- Python + Django (Cookiecutter 기반 프로젝트 구조)
- TailwindCSS: 스타일링 도구로 튜토리얼과 달리 Tailwind 사용
- PostgreSQL: 기본 데이터베이스 설정
📌 기능 목록 / 주요 기능 (Features 또는 주요 구현 사항)
- 포스트 생성
- 포스트 수정
- 포스트 삭제
- 포스트 리스트(피드)
- 댓글 기능
- 좋아요 기능
- 검색 기능
- 프로필 피드
- 무한스크룰
- 팔로우/언팔로우
📌 기술스택
- Python, Django, Django REST Framework
- PostgreSQL
- HTML, CSS, JavaScript
- Tailwind CSS
- AWS, Docker, Git, GitHub
💻 프로젝트 구성 화면 예시
✏️ 프로젝트 생성 절차
1. 가상환경 생성 및 진입
python -m venv venv
# Windows
.\venv\Scripts\activate
# macOS/Linux
source venv/bin/activate
venv
는 가상환경 이름이며, 원하는 이름으로 변경 가능합니다 (예:myenv
).
2. Cookiecutter 설치 및 실행
pip install cookiecutter
cookiecutter https://github.com/cookiecutter/cookiecutter-django.git
3. 주요 설정 항목 예시
project_name: Djangogram
project_slug: djangogram
description: 인스타그램 클론 프로젝트
author_name: 홍길동
domain_name: example.com
email: hong@example.com
windows: y
use_docker: y
postgres_version: 11.3
use_whitenoise: y
use_drf: y
frontend_pipeline: 4 # Webpack
...
대부분 기본값으로 Enter를 입력해도 되지만, 일부 항목은 프로젝트에 맞게 설정하세요.
4. 프로젝트 디렉토리 구조 예시
djangogram/
├── config/
├── contrib/
│ └── sites/
├── posts/
├── users/
├── static/
├── templates/
├── docs/
├── locale/
├── requirements/
├── utility/
├── manage.py
├── pyproject.toml
├── docker-compose.yml
└── README.md
📂 requirements 설치
cd djangogram
pip install -r requirements/local.txt
설치 중 psycopg 관련 오류 발생 시, Microsoft C++ Build Tools가 필요할 수 있습니다.
🐘 PostgreSQL 데이터베이스 생성
PostgreSQL CLI 또는 pgAdmin에서 다음 SQL을 실행:
CREATE DATABASE djangogram;
CREATE USER djangogram_user WITH PASSWORD '1111';
GRANT ALL PRIVILEGES ON DATABASE djangogram TO djangogram_user;
GRANT ALL ON SCHEMA public TO djangogram_user;
.env
파일 예시:
DATABASE_URL=postgres://djangogram_user:1111@localhost:5432/djangogram
settings/base.py
설정 예시:
DATABASES = {
"default": env.db(
"DATABASE_URL",
default="postgres://djangogram_user:1111@localhost:5432/djangogram",
)
}
⚙️ 마이그레이션 및 서버 실행
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
📦 GitHub 저장소 연결
git init
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/USERNAME/REPO.git
git push -u origin main
💡 데이터베이스 교체 예시
SQLite 사용 시:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
MySQL 사용 시:
pip install mysqlclient
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'your_db_name',
'USER': 'your_username',
'PASSWORD': 'your_password',
'HOST': 'localhost',
'PORT': '3306',
}
}
🧩 주요 디렉토리 설명
디렉토리 | 설명 |
---|---|
config/ |
설정 파일 (settings, urls 등) |
posts/ , users/ |
앱 모듈 (기능별 분리) |
static/ , templates/ |
정적 파일, 템플릿 |
contrib/sites/ |
사이트 설정용 앱 |
requirements/ |
의존성 목록 (local, production 등) |
docs/ |
문서화 관련 |
locale/ |
다국어 지원 |
utility/ |
설정 및 스크립트 |
🗂️ 최종 프로젝트 디렉토리 구조 (실제 생성된 기준)
아래는 Cookiecutter-Django를 기반으로 실제 생성된 TailwindCSS + PostgreSQL 환경의 최종 디렉토리 구조입니다 (이미지 기준):
django_instagram/
├── config/
├── contrib/
│ └── sites/
├── posts/
│ ├── api/
│ ├── migrations/
│ ├── tests/
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── forms.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── static/
├── templates/
├── users/
│ ├── migrations/
│ ├── tests/
│ ├── __init__.py
│ ├── adapters.py
│ ├── admin.py
│ ├── apps.py
│ ├── context_processors.py
│ ├── forms.py
│ ├── models.py
│ ├── urls.py
│ ├── views.py
│ ├── conftest.py
│ └── utils.py
├── docs/
├── locale/
├── requirements/
├── utility/
├── db.sqlite3
├── .editorconfig
├── .env
├── .gitattributes
├── .gitignore
├── .pre-commit-config.yaml
├── .readthedocs.yml
├── CONTRIBUTORS.txt
├── docker-compose.docs.yml
├── LICENSE
├── manage.py
├── pyproject.toml
└── README.md
기존 템플릿 구조보다 TailwindCSS와 테스트, API 모듈, 환경 설정 파일 등이 포함된 실제 프로젝트 구조로 참고용으로 매우 중요합니다.
✅ 마무리
- Cookiecutter-Django로 빠르게 장고 기반 프로젝트를 생성
- PostgreSQL 연동 및 가상환경 구성
- 실제 배포를 고려한 프로젝트 구조
- 다음 강의에서는 TailwindCSS 설정과 기본 템플릿 구성 진행